home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / bavarian / 001-010 / 008_dateien / datei 3 / data_base / sdb.mem < prev    next >
Text File  |  1993-11-04  |  25KB  |  1,013 lines

  1.  
  2.  
  3.  
  4.  
  5.                        SDB - a Simple Database System
  6.  
  7.                               by David Betz
  8.                             114 Davenport Ave.
  9.                            Manchester, NH 03103
  10.                               (603) 625-4691
  11.  
  12.                         Converted to the IBM/PC by
  13.                               David N. Smith
  14.                             44 Ole Musket Lane
  15.                             Danbury, CT  06810
  16.                               (203) 748-5934
  17.  
  18.  
  19.         1.0  INTRODUCTION
  20.  
  21.         SDB is a simple database manager for small systems.  It  was
  22.         developed  to  provide  a relatively low overhead system for
  23.         storing data  on  machines  with  limited  disk  and  memory
  24.         resources.   The current version runs on a PDT-11/150 with 2
  25.         RX01 floppy disk drives and 60K bytes of  memory  under  the
  26.         RT-11 operating system.  (it also runs on the VAX under VMS)
  27.  
  28.         SDB was originally intended  to  be  a  relational  database
  29.         system, so many of the terms used in describing it are taken
  30.         from the relational database literature.  Within the context
  31.         of SDB the user can safely make the following associations:
  32.  
  33.              1.  RELATION can be taken to mean FILE
  34.  
  35.              2.  TUPLE can be taken to mean RECORD
  36.  
  37.              3.  ATTRIBUTE can be taken to mean FIELD
  38.  
  39.         It should be noted that SDB is not a  relationally  complete
  40.         system.   It  provides  the relational operations of SELECT,
  41.         PROJECT, and JOIN, but does not provide the  set  operations
  42.         of  UNION,  INTERSECTION,  or  DIFFERENCE  as  well  as some
  43.         others.
  44.  
  45.  
  46.         2.0  RELATION FILE FORMATS
  47.  
  48.         SDB maintains a separate file for  each  relation  that  the
  49.         user  creates.  This file contains a header block containing
  50.         the definition of the relation including the names and types
  51.         of  all  of the relation's attributes.  The remainder of the
  52.         file contains fixed length records each containing one tuple
  53.         from the relation.
  54.  
  55.         Tuples can be of three types:
  56.  
  57.              1.  active - tuples that contain actual active data
  58.  
  59.              2.  deleted - tuples that have been deleted
  60.  
  61.              3.  unused - tuples that haven't been used yet
  62.  
  63.         SDB - a Simple Database System                        Page 2
  64.  
  65.  
  66.         Initially, all tuples are  unused.   When  a  new  tuple  is
  67.         stored  into  a  relation,  the  first unused tuple is found
  68.         (they are all contiguous at the end of the  relation  file).
  69.         The new tuple is stored as an active tuple.
  70.  
  71.         When a tuple is deleted, it is marked as  such.   The  space
  72.         previously  allocated  to  the  deleted tuple is left unused
  73.         until the relation is compressed.
  74.  
  75.         It is possible that when attempting to store a new tuple, no
  76.         unused  tuple can be found even though the relation contains
  77.         fewer than the maximum active  tuples.   This  happens  when
  78.         tuples  have  been  deleted since the time the relation file
  79.         was last compressed.
  80.  
  81.         The compress function  allows  all  of  the  space  lost  by
  82.         deleting tuples to be regained.  It does this by copying all
  83.         of the active tuples as far backward in the file as possible
  84.         leaving  all  of  the  available space toward the end of the
  85.         file.
  86.  
  87.  
  88.  
  89.         3.0  SELECTION EXPRESSIONS
  90.  
  91.         A selection expression specifies a set of tuples over  which
  92.         some  SDB  operation  is  to  be executed.  The syntax for a
  93.         selection expression is:
  94.  
  95.         <rse>           ::= <rnames> [ where <boolean> ]
  96.         <rnames>        ::= <rname> [ , <rname> ] ...
  97.         <rname>         ::= <relation-name> [ <alias> ]
  98.  
  99.         When a single relation name  is  specified  in  a  selection
  100.         expression,  each  tuple  within  that  relation  becomes  a
  101.         candidate for selection.
  102.  
  103.         When more than one relation name is  specified,  the  tuples
  104.         are  formed  by  taking  the  cross product of all specified
  105.         relations.  If a relation is to be crossed with  itself,  an
  106.         alias must be given to one or both of the occurances of that
  107.         relation name in the selection expression.  This allows  SDB
  108.         to determine which relation occurance is being refered to in
  109.         the boolean part of the selection expression.
  110.  
  111.         After the set of candidate tuples is determined, the boolean
  112.         expression  is evaluated for each candidate.  The candidates
  113.         for which the boolean expression evaluates  to  TRUE  become
  114.         the selected tuples.
  115.  
  116.         SDB - a Simple Database System                        Page 3
  117.  
  118.  
  119.         4.0  INITIALIZATION FILE AND COMMAND FILES
  120.  
  121.         When SDB is first run,  it  attempts  to  read  and  process
  122.         commands  from  a  file  named "SDB.INI".  This file usually
  123.         contains macro definitions, but can contain  any  valid  SDB
  124.         command.   In  addition,  it  is possible to process command
  125.         files from within SDB.   This  is  done  by  typing  an  '@'
  126.         followed by the command file name after the SDB prompt.
  127.  
  128.  
  129.  
  130.         5.0  FILE NAMES
  131.  
  132.         Whenever a file name is allowed in the syntax for a command,
  133.         it  is  possible  to  use  either  an identifier or a quoted
  134.         string.  An identifier is interpreted as the file name and a
  135.         string  is  interpreted  as  a full file specification.  The
  136.         string form allows for the  specification  of  an  alternate
  137.         device or extension.
  138.  
  139.  
  140.  
  141.         6.0  FORM DEFINITION FILES
  142.  
  143.         A form  definition  file  contains  a  template  into  which
  144.         attribute  values  are substituted during a print operation.
  145.         There are two types of information that can be included in a
  146.         form definition:
  147.  
  148.              1.  Literal text
  149.  
  150.              2.  Attribute references
  151.  
  152.         Attribute references are indicated by placing  the  name  of
  153.         the  attribute  being  referenced  between  a  pair of angle
  154.         brackets.  Literal text is anything that is not enclosed  in
  155.         angle brackets.
  156.  
  157.         SDB - a Simple Database System                        Page 4
  158.  
  159.  
  160.         Example:
  161.         ________
  162.  
  163.         print using test amount,category from checks;
  164.  
  165.         Where test.frm contains:
  166.  
  167.         Amount: <amount>
  168.         Category: <category>
  169.  
  170.         (MPK) For ease in generating English text, a $ character  may
  171.         be placed before  the  attribute  name  inside  an  attribute
  172.         reference, in which case no trailing blanks  will  appear  in
  173.         the output for that reference.  For example:
  174.  
  175.         print using test number,category from checks;
  176.  
  177.     Where test.frm contains:
  178.  
  179.     Check #<$number> was spent on <$category
  180.  
  181.  
  182.         7.0  ALIASES FOR RELATIONS AND ATTRIBUTES
  183.  
  184.         When a relation or attribute name is specified  in  a  print
  185.         statement,  it  is possible to provide an alternate name for
  186.         that relation or attribute.  This is useful  for  relations,
  187.         when  it  is  necessary to join a relation to itself.  It is
  188.         useful for attributes when it is  desired  that  the  column
  189.         headers  in  a  table be different from the actual attribute
  190.         names.  Also, alternate  attribute  names  can  be  used  in
  191.         references  to that attribute in the where clause as well as
  192.         in a  form  definition  file.   The  syntax  for  specifying
  193.         aliases is:
  194.  
  195.             <name> <alias>
  196.  
  197.  
  198.         Example:
  199.         ________
  200.  
  201.         print using test amount a,category c from checks;
  202.  
  203.         Where test.frm contains:
  204.  
  205.         Amount: <a>
  206.         Category: <c>
  207.  
  208.         SDB - a Simple Database System                        Page 5
  209.  
  210.  
  211.         8.0  BOOLEAN EXPRESSIONS
  212.  
  213.         The syntax for boolean expressions:
  214.  
  215.         <expr>          ::= <land> [ '|' <land> ]
  216.         <land>          ::= <relat> [ '&' <relat> ]
  217.         <relat>         ::= <primary> [ <relop> <primary> ]
  218.         <primary>       ::= <term> [ <addop> <term> ]
  219.         <term>          ::= <unary> [ <mulop> <unary> ]
  220.         <unary>         ::= <factor> | <unop> <unary>
  221.         <factor>        ::= <operand> | '(' <expr> ')'
  222.         <operand>       ::= <number> | <string> | <attribute>
  223.         <attribute>     ::= [ <rname> . ] <aname>
  224.         <relop>         ::= '=' | '<>' | '<' | '>' | '<=' | '>='
  225.         <addop>         ::= '+' | '-'
  226.         <mulop>         ::= '*' | '/'
  227.         <unop>          ::= '+' | '-' | '~'
  228.  
  229.  
  230.         Operators:
  231.  
  232.              1.  '=' - equal
  233.  
  234.              2.  '<>' - not equal
  235.  
  236.              3.  '<' - less than
  237.  
  238.              4.  '>' - greater than
  239.  
  240.              5.  '<=' - less than or equal
  241.  
  242.              6.  '>=' - greater than or equal
  243.  
  244.              7.  '+' - addition or unary plus (not implemented)
  245.  
  246.              8.  '-' - subraction or unary minus (not implemented)
  247.  
  248.              9.  '*' - multiplication (not implemented)
  249.  
  250.             10.  '/' - division (not implemented)
  251.  
  252.             11.  '&' - logical and
  253.  
  254.             12.  '|' - logical or
  255.  
  256.             13.  '~' - logical not
  257.  
  258.         Operands:
  259.  
  260.              1.  number - a string of digits containing at most  one
  261.                  decimal point
  262.  
  263.              2.  string - a string of characters enclosed in  double
  264.                  quotes
  265.  
  266.         SDB - a Simple Database System                        Page 6
  267.  
  268.  
  269.              3.  attribute - an attribute name optionally  qualified
  270.                  by a relation name
  271.  
  272.  
  273.         SDB - a Simple Database System                        Page 7
  274.  
  275.  
  276.         9.0  INTERACTIVE COMMAND DESCRIPTIONS
  277.  
  278.         Function:
  279.         _________
  280.  
  281.         Create a relation file
  282.  
  283.  
  284.         Format:
  285.         _______
  286.  
  287.         create <rname> ( <alist> ) <size>
  288.  
  289.  
  290.         Rules:
  291.         ______
  292.  
  293.              1.  <rname> is the name of the relation file
  294.  
  295.              2.  <alist> is a list of attribute definitions  of  the
  296.                  form:
  297.  
  298.                    <aname> { char | num } <size>
  299.  
  300.                  where:
  301.  
  302.                  1.  <aname> is the name of the attribute
  303.  
  304.                  2.  the type of the attribute is either  "char"  or
  305.                      "num"
  306.  
  307.                  3.  <size> is the number of bytes allocated to  the
  308.                      attribute value
  309.  
  310.  
  311.              3.  <size> is the maximum number of tuples the file  is
  312.                  to hold
  313.  
  314.  
  315.  
  316.         Example:
  317.         ________
  318.  
  319.         create checks (
  320.             number      num     4
  321.             date        char    8
  322.             payee       char    20
  323.             amount      num     8
  324.             category    char    5
  325.         ) 200
  326.  
  327.         This command creates a relation file named "checks.sdb" with
  328.         attributes   "number",   "date",   "payee",   "amount",  and
  329.         "category" and space to store 200 tuples.
  330.  
  331.         SDB - a Simple Database System                        Page 8
  332.  
  333.  
  334.         Function:
  335.         _________
  336.  
  337.         Insert tuples into a relation
  338.  
  339.  
  340.         Format:
  341.         _______
  342.  
  343.         insert <rname>
  344.  
  345.  
  346.         Rules:
  347.         ______
  348.  
  349.              1.  <rname> is the name of a relation
  350.  
  351.              2.  the user will be prompted for  the  values  of  the
  352.                  attributes for the tuple to be inserted
  353.  
  354.              3.  a  null  response  to  an  attribute  prompt   will
  355.                  terminate tuple entry
  356.  
  357.              4.  if a null value is desired, a single space  can  be
  358.                  entered
  359.  
  360.  
  361.         SDB - a Simple Database System                        Page 9
  362.  
  363.  
  364.         Function:
  365.         _________
  366.  
  367.         Delete tuples from a set of relations
  368.  
  369.  
  370.         Format:
  371.         _______
  372.  
  373.         delete <rse> ;
  374.  
  375.  
  376.         Rules:
  377.         ______
  378.  
  379.              1.  <rse> is a tuple selection expression
  380.  
  381.              2.  selected tuples are deleted
  382.  
  383.  
  384.  
  385.         Example:
  386.         ________
  387.  
  388.         delete checks where category = "junk";
  389.  
  390.         SDB - a Simple Database System                       Page 10
  391.  
  392.  
  393.  
  394.         Function:
  395.         _________
  396.  
  397.         Update the values of selected attributes in selected tuples
  398.  
  399.  
  400.         Format:
  401.         _______
  402.  
  403.         update { <attrs> | * } from <rse> ;
  404.  
  405.  
  406.         Rules:
  407.         ______
  408.  
  409.              1.  <attrs> is a list of attribute names to be updated
  410.  
  411.              2.  * means all attributes
  412.  
  413.              3.  <rse> is a tuple selection expression
  414.  
  415.              4.  for each  set  of  selected  tuples,  the  user  is
  416.                  prompted for new values for the selected attributes
  417.  
  418.              5.  a null response to an attribute prompt will  retain
  419.                  the previous attribute value
  420.  
  421.              6.  if a null value is desired, a single space  can  be
  422.                  entered
  423.  
  424.  
  425.  
  426.         Example:
  427.         ________
  428.  
  429.         update amount,category from checks where number > 10;
  430.  
  431.         SDB - a Simple Database System                       Page 11
  432.  
  433.  
  434.         Function:
  435.         _________
  436.  
  437.         Print a table of values of selected attributes
  438.  
  439.  
  440.         Format:
  441.         _______
  442.  
  443.         print [ using <fname> ] { <attrs> | * } from  <rse>  [  into
  444.         <fname> ] ;
  445.  
  446.  
  447.         Rules:
  448.         ______
  449.  
  450.              1.  using  <fname>  indicates  output  using   a   form
  451.                  definition file (.FRM)
  452.  
  453.              2.  <attrs> is a list of attribute names to be printed
  454.  
  455.              3.  * means all attributes
  456.  
  457.              4.  <rse> is a tuple selection expression
  458.  
  459.              5.  <fname> is the name of an file to which  the  table
  460.                  will be output (.TXT)
  461.  
  462.              6.  if the output file name is omitted,  output  is  to
  463.                  the terminal
  464.  
  465.              7.  for each set of selected tuples, a table  entry  is
  466.                  printed containing the selected attributes
  467.  
  468.  
  469.  
  470.         Example:
  471.         ________
  472.  
  473.         print payee,amount from checks where category = "junk";
  474.  
  475.         SDB - a Simple Database System                       Page 12
  476.  
  477.  
  478.         Function:
  479.         _________
  480.  
  481.         Import tuples from a file into a relation
  482.  
  483.  
  484.         Format:
  485.         _______
  486.  
  487.         import <fname> into <rname>
  488.  
  489.  
  490.         Rules:
  491.         ______
  492.  
  493.              1.  <fname> is the name of the input file (.DAT)
  494.  
  495.              2.  the input file contains the  values  of  the  tuple
  496.                  attributes with each on a separate line
  497.  
  498.              3.  <rname> is the name of a relation
  499.  
  500.              4.  tuples are appended to the named relation
  501.  
  502.  
  503.         SDB - a Simple Database System                       Page 13
  504.  
  505.  
  506.         Function:
  507.         _________
  508.  
  509.         Export tuples from a relation into a file
  510.  
  511.  
  512.         Format:
  513.         _______
  514.  
  515.         export <rname> [ into <fname> ] ;
  516.  
  517.  
  518.         Rules:
  519.         ______
  520.  
  521.              1.  <rname> is the name of a relation
  522.  
  523.              2.  <fname> is the name of the output file (.DAT)
  524.  
  525.              3.  if the output file name is omitted,  output  is  to
  526.                  the terminal
  527.  
  528.              4.  tuples are written to  the  output  file  with  one
  529.                  attribute value per line
  530.  
  531.  
  532.         SDB - a Simple Database System                       Page 14
  533.  
  534.  
  535.         Function:
  536.         _________
  537.  
  538.         Extract the definition of a relation into a file
  539.  
  540.  
  541.         Format:
  542.         _______
  543.  
  544.         extract <rname> [ into <fname> ] ;
  545.  
  546.  
  547.         Rules:
  548.         ______
  549.  
  550.              1.  <rname> is the name of a relation
  551.  
  552.              2.  <fname> is the name of the output file (.DEF)
  553.  
  554.              3.  if the output file name is omitted,  output  is  to
  555.                  the terminal
  556.  
  557.              4.  the definition of the relation is  written  to  the
  558.                  output file
  559.  
  560.  
  561.         SDB - a Simple Database System                       Page 15
  562.  
  563.  
  564.         Function:
  565.         _________
  566.  
  567.         Compress a relation file
  568.  
  569.  
  570.         Format:
  571.         _______
  572.  
  573.         compress <rname>
  574.  
  575.  
  576.         Rules:
  577.         ______
  578.  
  579.              1.  <rname> is the name of a relation file
  580.  
  581.              2.  tuples are copied toward the front of the  relation
  582.                  file  such  that  any  space  freed  by  previously
  583.                  deleted tuples becomes adjacent to the  free  space
  584.                  at the end of the file, thus becoming available for
  585.                  use in inserting new tuples
  586.  
  587.  
  588.         SDB - a Simple Database System                       Page 16
  589.  
  590.  
  591.         Function:
  592.         _________
  593.  
  594.         Sort a relation file
  595.  
  596.  
  597.         Format:
  598.         _______
  599.  
  600.         sort <rname> by <sname> { , <sname } ...  ;
  601.  
  602.  
  603.         Rules:
  604.         ______
  605.  
  606.              1.  <rname> is the name of a relation file
  607.  
  608.              2.  <sname> is the name of  an  attribute  to  sort  on
  609.                  followed optionally by "ascending" or "descending"
  610.  
  611.              3.  if a sort order  is  not  specified,  ascending  is
  612.                  assumed
  613.  
  614.              4.  tuples within the  relation  are  sorted  in  place
  615.                  using the attributes indicated
  616.  
  617.  
  618.         SDB - a Simple Database System                       Page 17
  619.  
  620.  
  621.         Function:
  622.         _________
  623.  
  624.         Define a macro
  625.  
  626.  
  627.         Format:
  628.         _______
  629.  
  630.         define <mname>
  631.  
  632.  
  633.         Rules:
  634.         ______
  635.  
  636.              1.  <mname> is the name of the macro being defined
  637.  
  638.              2.  if a macro with the specified name already  exists,
  639.                  it is replaced
  640.  
  641.              3.  after entering the define command, definition  mode
  642.                  is entered
  643.  
  644.              4.  definition  mode  is  indicated   by   the   prompt
  645.                  "SDB-DEF>"
  646.  
  647.              5.  all lines typed in definition mode are added to the
  648.                  macro definition
  649.  
  650.              6.  a blank line terminates definition mode
  651.  
  652.              7.  a macro can be deleted by entering a blank line  as
  653.                  the only line in the definition
  654.  
  655.              8.  after a macro is defined, every  occurance  of  the
  656.                  macro name is replaced by the macro definition
  657.  
  658.  
  659.         SDB - a Simple Database System                       Page 18
  660.  
  661.  
  662.         Function:
  663.         _________
  664.  
  665.         Show a macro definition
  666.  
  667.  
  668.         Format:
  669.         _______
  670.  
  671.         show <mname>
  672.  
  673.  
  674.         Rules:
  675.         ______
  676.  
  677.              1.  <mname> is the name of a macro whose definition  is
  678.                  to be shown
  679.  
  680.  
  681.         SDB - a Simple Database System                       Page 19
  682.  
  683.  
  684.         Function:
  685.         _________
  686.  
  687.         Print a short help message
  688.  
  689.  
  690.  
  691.         Format:
  692.         _______
  693.  
  694.         help
  695.  
  696.  
  697.         Rules:
  698.         ______
  699.  
  700.              1.  (none)
  701.  
  702.  
  703.         SDB - a Simple Database System                       Page 20
  704.  
  705.  
  706.         Function:
  707.         _________
  708.  
  709.         Exit from SDB
  710.  
  711.  
  712.         Format:
  713.         _______
  714.  
  715.         exit
  716.  
  717.  
  718.         Rules:
  719.         ______
  720.  
  721.              1.  (none)
  722.  
  723.  
  724.         SDB - a Simple Database System                       Page 21
  725.  
  726.  
  727.         10.0  PROGRAM INTERFACE
  728.  
  729.         SDB provides a callable program interface to allow  programs
  730.         written  in  DECUS-C  to access relation files.  In order to
  731.         use the call interface, the users program should  be  linked
  732.         with  the SDBUSR.OBJ object library.  Also, additional stack
  733.         space should be allocated at link  time  using  the  /BOTTOM
  734.         qualifier  on  the link command.  /BOTTOM:3000 seems to work
  735.         well, but it is probably possible to get away with less.
  736.  
  737.         Example:
  738.         ________
  739.  
  740.         #include <stdio.h>
  741.         #include "sdb.h"
  742.  
  743.         main()
  744.         {
  745.             DB_SEL *sptr;
  746.             char payee[100],amount[100];
  747.  
  748.             /* setup retrieval */
  749.             if ((sptr = db_retrieve("checks where amount > 25.00")) == NULL) {
  750.                 printf("*** error: %s ***\n",db_ertxt(dbv_errcode));
  751.                 exit();
  752.             }
  753.  
  754.             /* bind user variables to attributes */
  755.             db_bind(sptr,"checks","payee",payee);
  756.             db_bind(sptr,"checks","amount",amount);
  757.  
  758.             /* loop through selection */
  759.             while (db_fetch(sptr))
  760.                 printf("%s\t%s\n",payee,amount);
  761.  
  762.             /* finish selection */
  763.             db_done(sptr);
  764.         }
  765.  
  766.         SDB - a Simple Database System                       Page 22
  767.  
  768.  
  769.         Function:
  770.         _________
  771.  
  772.         Setup a tuple retrieval context
  773.  
  774.  
  775.         Format:
  776.         _______
  777.  
  778.         dbptr = db_retrieve(sexpr [ ,arg ]...)
  779.  
  780.  
  781.         Rules:
  782.         ______
  783.  
  784.              1.  sexpr is a pointer to a string containing an rse
  785.  
  786.              2.  arg is a "printf" argument
  787.  
  788.              3.  dbptr is a database context pointer
  789.  
  790.              4.  db_retrieve returns NULL on errors
  791.  
  792.              5.  on errors, the error code is in dbv_errcode
  793.  
  794.  
  795.         SDB - a Simple Database System                       Page 23
  796.  
  797.  
  798.         Function:
  799.         _________
  800.  
  801.         Fetch the next set of tuples from a retrieval context
  802.  
  803.  
  804.         Format:
  805.         _______
  806.  
  807.         db_fetch(dbptr)
  808.  
  809.  
  810.         Rules:
  811.         ______
  812.  
  813.              1.  dbptr is a database context pointer
  814.  
  815.              2.  updates the values of all bound user variables
  816.  
  817.              3.  db_fetch returns FALSE if no more tuples  match  or
  818.                  if an error occurs
  819.  
  820.              4.  on errors, the error code is in dbv_errcode
  821.  
  822.  
  823.         SDB - a Simple Database System                       Page 24
  824.  
  825.  
  826.         Function:
  827.         _________
  828.  
  829.         Update the current tuple within a retrieval context
  830.  
  831.  
  832.         Format:
  833.         _______
  834.  
  835.         db_update(dbptr)
  836.  
  837.  
  838.         Rules:
  839.         ______
  840.  
  841.              1.  dbptr is a database context pointer
  842.  
  843.              2.  db_update returns FALSE if an error occurs
  844.  
  845.              3.  on errors, the error code is in dbv_errcode
  846.  
  847.  
  848.         SDB - a Simple Database System                       Page 25
  849.  
  850.  
  851.         Function:
  852.         _________
  853.  
  854.         Store a new tuple within a retrieval context
  855.  
  856.  
  857.         Format:
  858.         _______
  859.  
  860.         db_store(dbptr)
  861.  
  862.  
  863.         Rules:
  864.         ______
  865.  
  866.              1.  dbptr is a database context pointer
  867.  
  868.              2.  db_store returns FALSE if an error occurs
  869.  
  870.              3.  on errors, the error code is in dbv_errcode
  871.  
  872.  
  873.         SDB - a Simple Database System                       Page 26
  874.  
  875.  
  876.         Function:
  877.         _________
  878.  
  879.         Bind a user variable to  the  value  of  a  tuple  attribute
  880.         within a retrieval context
  881.  
  882.  
  883.         Format:
  884.         _______
  885.  
  886.         db_bind(dbptr,rname,aname,value)
  887.  
  888.  
  889.         Rules:
  890.         ______
  891.  
  892.              1.  dbptr is a database context pointer
  893.  
  894.              2.  rname is a pointer to the relation name
  895.  
  896.              3.  aname is a pointer to the attribute name
  897.  
  898.              4.  value is a pointer to a character array to  receive
  899.                  the attribute value
  900.  
  901.              5.  db_bind returns FALSE if an error occurs
  902.  
  903.              6.  on errors, the error code is in dbv_errcode
  904.  
  905.  
  906.         SDB - a Simple Database System                       Page 27
  907.  
  908.  
  909.         Function:
  910.         _________
  911.  
  912.         Get the value  of  a  tuple  attribute  within  a  retrieval
  913.         context
  914.  
  915.  
  916.         Format:
  917.         _______
  918.  
  919.         db_get(dbptr,rname,aname,value)
  920.  
  921.  
  922.         Rules:
  923.         ______
  924.  
  925.              1.  dbptr is a database context pointer
  926.  
  927.              2.  rname is a pointer to the relation name
  928.  
  929.              3.  aname is a pointer to the attribute name
  930.  
  931.              4.  value is a pointer to a character array to  receive
  932.                  the attribute value
  933.  
  934.              5.  db_get returns FALSE if an error occurs
  935.  
  936.              6.  on errors, the error code is in dbv_errcode
  937.  
  938.  
  939.         SDB - a Simple Database System                       Page 28
  940.  
  941.  
  942.         Function:
  943.         _________
  944.  
  945.         Put the value  of  a  tuple  attribute  within  a  retrieval
  946.         context
  947.  
  948.  
  949.         Format:
  950.         _______
  951.  
  952.         db_put(dbptr,rname,aname,value)
  953.  
  954.  
  955.         Rules:
  956.         ______
  957.  
  958.              1.  dbptr is a database context pointer
  959.  
  960.              2.  rname is a pointer to the relation name
  961.  
  962.              3.  aname is a pointer to the attribute name
  963.  
  964.              4.  value is a pointer to the new value
  965.  
  966.              5.  db_put returns FALSE if an error occurs
  967.  
  968.              6.  on errors, the error code is in dbv_errcode
  969.  
  970.  
  971.         SDB - a Simple Database System                       Page 29
  972.  
  973.  
  974.         Function:
  975.         _________
  976.  
  977.         Discontinue usage of a retrieval context
  978.  
  979.  
  980.  
  981.         Format:
  982.         _______
  983.  
  984.         db_done(dbptr)
  985.  
  986.  
  987.         Rules:
  988.         ______
  989.  
  990.              1.  dbptr is a database context pointer
  991.  
  992.  
  993.         SDB - a Simple Database System                       Page 30
  994.  
  995.  
  996.         Function:
  997.         _________
  998.  
  999.         Translate an error code to an error message text
  1000.  
  1001.  
  1002.         Format:
  1003.         _______
  1004.  
  1005.         db_ertxt(errcode)
  1006.  
  1007.  
  1008.         Rules:
  1009.         ______
  1010.  
  1011.              1.  errcode is an SDB error code
  1012.  
  1013.